'777'

"""
1,基本规则
    1，大小写敏感
    2，使用缩进表示层级关系
    3，缩进长度没有限制，只要元素对齐就表示这些元素属于一个层级
    4，#表示注释
    5，字符串可以不用引号标注
2，三种数据结构
    1,map,散列表：使用冒号（：）表示键值对，同一缩进的所有键值对属于一个map
        map()根据提供的函数对指定序列做映射  
    2，list，数组
        使用连字符（-）表示：
    3，scalar，纯量
        数据最小的单位，不可以再分割
        
数据结构嵌套
    ，map和list的元素可以是另一个map或者list或者纯量。
    1，map嵌套map
    
yaml配置文件读写
1，安装pyyaml
导入 import yaml

load:讲yaml流转化为python字典
yaml.load(stream,Loader = yaml.FullLoader)
参数：stream：待读取的文件对象
    yaml.FullLoader：加载yaml
    
dump：将python对象转化为yaml流；
yaml.dump(data,stream,**kwargs)
参数：data：写入数据类型为字典
    stream：打开文件对象
    
"""

import yaml
class YamlHandler:
    def __init__(self,file):
        self.file = file

    def read_yaml(self):
        "读取yaml数据"
        with open(self.file,encoding='utf-8') as f:
            return yaml.load(f.read(),Loader=yaml.FullLoader)

    def write_yaml(self,data):
        "向yaml文件写入数据"
        with open(self.file,encoding='utf-8',mode='w') as f:
            return yaml.dump(data,stream=f,allow_unicode=True)

# Environ = os.path.abspath(os.path.dirname(os.path.dirname(__file__)) + Environ)+"/"+filename#拼接定位到data文件夹
# filepath = os.path.abspath(os.path.dirname(os.path.dirname(__file__)) + r"/data")+"/"+filename#拼接定位到data文件夹


# def get_yaml_Environ(Environ):
#     with open(Environ, "r", encoding="utf-8")as f:
#         # 调用load方法加载文件流
#         return yaml.load(f, Loader=yaml.FullLoader)
#
# def get_yaml_filepath(filepath):
#     with open(filepath, "r", encoding="utf-8")as f:
#         # 调用load方法加载文件流
#         return yaml.load(f, Loader=yaml.FullLoader)

def get_yaml_filepath(filepath=None,Environ=None):
    os.path.abspath(os.path.dirname(os.path.dirname(__file__)) + Environ) + "/" + Environ  # 拼接定位到data文件夹
    os.path.abspath(os.path.dirname(os.path.dirname(__file__)) + r"/data") + "/" + filepath  # 拼接定位到data文件夹
    with open((filepath,Environ), "r", encoding="utf-8")as f:
        # 调用load方法加载文件流
        return yaml.load(f, Loader=yaml.FullLoader)

if __name__ == '__main__':
    data = {'daozhang': {'yaml': 'yaml777.yaml', 'python': 'python777', 'ceshi': 'ceshi777', 'hbq': 'hbq777'}}
    # #读取yaml777.yaml配置文件
    # read_data = YamlHandler(r'D:\daima\xin-daima\kejian\yaml详解\yaml777.yaml').read_yaml()
    # print(read_data)

    #讲data数据写入yaml777.yaml文件
    write_data = YamlHandler(r'D:\daima\xin-daima\kejian\yaml详解\yaml888.yaml').write_yaml(data)

